草庐IT

Azure Cosmos DB 中托管的 MongoDB : Sharding vs partitioning

全部标签

c# - 处理内存泄漏的非托管 dll

我有一个c#应用程序,它依赖于第三方非托管程序集来访问某些硬件。非托管代码存在内存泄漏,每次访问后内存消耗将增加~10mb。问题是已知的;没有错误修正可用。有没有一种方法可以让我在不定期重启的情况下继续使用这个程序集?我尝试创建一个单独的AppDomain,通过appDomain.CreateInstanceAndUnwrap()将有问题的代码加载到该AppDomain中,然后通过AppDomain.Unload()卸载该域.然而,这显然不会释放该域使用的非托管内存,只会释放托管内存。我还可以将应用程序拆分为两个独立的部分,然后仅重新启动具有非托管dll的部分。然而,这将意味着重大的重

c# - 优化托管到 native 调用

如何加快从托管代码调用native方法?我正在编写一个程序,该程序需要能够管理任意大小的对象列表并从中高速检索信息,并将其输入脚本。脚本是一些编译后的C#代码。我正在编写从C++(native)DLL/SO/等到C#(.Net或Mono)管理层的基本接口(interface)层。现在,我一直在做一些测试,我发现平均而言,从托管代码调用native方法比在托管代码中调用native方法慢100倍(所有native和所有托管都一样快,供引用)。我使用的语法是:[DllImport("test.dll")]externstaticpublicStringtest_method(Stringv

c# - NuGet 发布的 github 托管项目的目录结构

对于一个github托管的开源C#项目,它也可以通过NuGet获得,应该如何组织源代码?具体来说:.nuspec文件应该在github存储库中吗?.nuspec文件是否应与.csproj文件位于同一文件夹中?既然生成了NuGet包树(/lib、/content东西),它应该在git中吗?我的想法是NuGet部分与github托管是分开的,因为在项目源中可用但.nuspec不可用,因为NuGet中的发布本身不是开源操作。None不希望每个分支都构建和发布一个新NuGet程序包,这样开源Foo程序包最终在画廊中作为“Rick'sFoo”与“John'sFoo”与“Alice'sFoo”等等

c# - 如何在 IE 保护模式下访问 AppData(从托管 BHO)

我正在用C#编写IE扩展(BHO)。当在保护模式下运行时(IE的新UAC兼容模式强制所有扩展以低完整性运行),它会失败,因为它无法访问appdata文件夹中的user.config。是否有某种方法可以标记文件可由完整性较低的进程读取?如果做不到这一点,是否有某种方法可以强制BHO以中等完整性运行?如果做不到这一点,是否有某种方法可以在指向AppData中的中等完整性文件的低完整性文件夹中创建低完整性符号链接(symboliclink)?如果做不到这一点,是否有某种方法可以强制应用程序使用LocalLow文件夹中的user.config文件?如何在.net中获取此文件夹的路径(它未在En

C# MongoDB 驱动程序忽略超时选项

我们正在为MongoDB使用C#驱动程序(1.9.1)。如果数据库不可访问,我们有一些需要运行的回退逻辑,但是默认超时太长。我们试图改变它,但我们设置的值却被忽略了。对于测试,我们使用的是无响应机器的IP。我们尝试在连接字符串中设置超时:或者通过代码:varclient=newMongoClient(newMongoClientSettings{Server=newMongoServerAddress("xxx.xxx.xxx.xxx"),SocketTimeout=newTimeSpan(0,0,0,2),WaitQueueTimeout=newTimeSpan(0,0,0,2),C

c# - 在 IIS 7 托管环境 : ASP. NET 中获取 Url 路由让我头疼

我正在尝试使用System.Web.Routing实现ASP.NETURL路由。这似乎在我的本地主机上工作正常但是当我上线时我收到IIS7的404错误(找不到文件)。仅供引用,托管使用WindowsServer2008IIS7。我认为这在处理路由机制方面有所不同。但我无法弄清楚到底发生了什么。以下是我到目前为止为使其正常工作所做的设置和更改,并为我自己提供一些荣誉,它在本地工作得非常好。Web.Config设置然后我有一个具有以下标记的system.webserver部分然后在Application_Start部分我定义了一个路由如下:voidApplication_Start(obj

c# - 在传递给非托管代码之前固定一个可更新的结构?

我使用一些旧的API,需要将结构的指针传递给异步运行的非托管代码。换句话说,在我将结构指针传递给非托管代码后,非托管代码复制该指针并立即返回。非托管代码可以在另一个线程的后台访问该结构。我无法控制在另一个线程中运行的非托管代码,也无法控制线程本身。固定的{}语句不能用于固定,因为它不是为异步非托管固定而设计的。GCHandle只能固定引用,因此必须对结构进行装箱才能使用GCHandle。我试过了,它有效。它的主要问题是您无法从托管代码更新结构。要更新结构,首先我们需要将其拆箱,然后更新,然后再次装箱,但是......哎呀......再次装箱?!?这意味着内存中的前一个指针仍然指向旧的非

c# - 无法通过对象 ID 查找 MongoDB C# 驱动程序?

使用MongoDBC#驱动程序(http://github.com/samus/mongodb-csharp),我似乎无法通过ObjectId获取数据。在我使用的命令下方:varspec=newDocument{{"_id",id}};vardoc=mc.FindOne(spec);我也试过这个:varspec=newDocument{{"_id","ObjectId(\""+id+"\")"}};vardoc=mc.FindOne(spec);两者都不返回任何内容。同时,如果我从mongo控制台查询它,它会返回预期的结果。我的问题是,该驱动程序是否真的支持通过ObjectId进行查找

c# - 如何将数据从托管程序集流式传输到 native 库并再次返回?

如何将数据(文本)从托管程序集流式传输到native库,然后将数据(文本)流式传输回托管程序集?具体来说,我想在.NET端公开某种类型的System.IO.Stream,以及(最重要的)FILE*在native端。本地方法的签名应该是:FILE*foo(FILE*bar);围绕原生p/invoke调用的包装器的签名应该是:CustomStreamfoo(CustomStreambar);我不想在native端使用回调方法(一种用于获取更多数据,一种用于设置更多数据)。我想在native端使用FILE*-以及对其进行操作的所有相关方法,例如fprintf。我不想要任何磁盘I/O。这需要在

c# - 如何通过引用修改该字符串的非托管 C 库来发送字符串?

我是与非托管库交互的新手。我有一个非托管C函数,它通过函数内的引用修改字符串。我在从C#传递字符串并通过C函数修改它时遇到问题。这是C函数:__declspec(dllexport)void__stdcallTest(char*name){*name="Bar";}这是C#DLL导入代码:[DllImport(@"C:/blah/mylibrary.dll")]publicexternstaticstringTest(stringname);这是我用来调用函数的代码:strings="foo";Test(s);//Iwantstobe"Bar"aftertheaboveline我曾尝试